↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → U31(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → RIGHT_IN(tree(X, niltree, XS), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U21(X, XS, YS, flat_in(ZS, YS))
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → U31(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → RIGHT_IN(tree(X, niltree, XS), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U21(X, XS, YS, flat_in(ZS, YS))
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ PrologToPiTRSProof
FLAT_IN(cons(X, YS)) → U11(YS, right_in)
FLAT_IN(ZS) → FLAT_IN(ZS)
U11(YS, right_out) → FLAT_IN(YS)
right_in → right_out
right_in
No rules are removed from R.
FLAT_IN(cons(X, YS)) → U11(YS, right_in)
POL(FLAT_IN(x1)) = 1 + x1
POL(U11(x1, x2)) = 1 + 2·x1 + x2
POL(cons(x1, x2)) = 1 + x1 + 2·x2
POL(right_in) = 0
POL(right_out) = 0
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
FLAT_IN(ZS) → FLAT_IN(ZS)
U11(YS, right_out) → FLAT_IN(YS)
right_in → right_out
right_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
FLAT_IN(ZS) → FLAT_IN(ZS)
right_in → right_out
right_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ PrologToPiTRSProof
FLAT_IN(ZS) → FLAT_IN(ZS)
right_in
right_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
FLAT_IN(ZS) → FLAT_IN(ZS)
FLAT_IN(ZS) → FLAT_IN(ZS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → U31(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → RIGHT_IN(tree(X, niltree, XS), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U21(X, XS, YS, flat_in(ZS, YS))
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → U31(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → RIGHT_IN(tree(X, niltree, XS), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U21(X, XS, YS, flat_in(ZS, YS))
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
FLAT_IN(cons(X, YS)) → U11(X, YS, right_in)
FLAT_IN(ZS) → FLAT_IN(ZS)
U11(X, YS, right_out) → FLAT_IN(YS)
right_in → right_out
right_in
No rules are removed from R.
FLAT_IN(cons(X, YS)) → U11(X, YS, right_in)
POL(FLAT_IN(x1)) = x1
POL(U11(x1, x2, x3)) = x1 + 2·x2 + 2·x3
POL(cons(x1, x2)) = 1 + 2·x1 + 2·x2
POL(right_in) = 0
POL(right_out) = 0
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
FLAT_IN(ZS) → FLAT_IN(ZS)
U11(X, YS, right_out) → FLAT_IN(YS)
right_in → right_out
right_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
FLAT_IN(ZS) → FLAT_IN(ZS)
right_in → right_out
right_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
FLAT_IN(ZS) → FLAT_IN(ZS)
right_in
right_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
FLAT_IN(ZS) → FLAT_IN(ZS)
FLAT_IN(ZS) → FLAT_IN(ZS)